package com.example.demo.HutoolTest;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.CharsetUtil;
import com.example.demo.HutoolTest.util.HutoolDate;

import java.util.List;

public class HutoolTest {

    public static void main(String[] args) {
        /**
         * Convert 转换工具
         */
        // int转String
        int a = 1;
        System.out.println(Convert.toStr(a));

        // String转Date
        String b = "2000-08-10";
        System.out.println(Convert.toDate(b));

        // 任意类型转换
        Object[] c = {"a", "哈哈", "", "1"};
        List cList = Convert.convert(new TypeReference<List>() {
        }, c);
        System.out.println(cList);

        // 半角圆角转换
        String d = "12345678";
        System.out.println(Convert.toSBC(d));

        // 十六进制转换
        String e = "我是一只小小小小鸟!";
        System.out.println(Convert.toHex(e, CharsetUtil.CHARSET_UTF_8));

        // 十六进制转换
        String f = "e68891e698afe4b880e58faae5b08fe5b08fe5b08fe5b08fe9b89f21";
        System.out.println(Convert.hexToStr(f, CharsetUtil.CHARSET_UTF_8));

        // 金额转汉字(最多到分,会四舍五入)
        double g = 123456.789;
        System.out.println(Convert.digitToChinese(g));

        // 数字简化
        double h = 999999999.999;
        System.out.println(Convert.numberToSimple(h));

        /**
         * core-DateUtil 核心工具类-时间工具
         */
        String dateStr_a = "2000-08-10";
        // 转换DateTime类型
        System.out.println(DateUtil.parse(dateStr_a));
        // hutool内自定义时间工具
        System.out.println(HutoolDate.parseStr(dateStr_a));

        // 计时
        TimeInterval timer = DateUtil.timer();

        ThreadUtil.sleep(1500);
        // 花费毫秒数
        System.out.println(timer.interval());
        // 返回花费时间，并重置开始时间
        System.out.println(timer.intervalRestart());
        // 花费分钟数
        System.out.println(timer.intervalMinute());

        // 分组计时
        final TimeInterval timeInterval = new TimeInterval();

        timeInterval.start("1");
        ThreadUtil.sleep(1000);

        timeInterval.start("2");
        ThreadUtil.sleep(3000);

        Console.log("Timer 1 took {} ms", timer.intervalMs("1"));
        Console.log("Timer 2 took {} ms", timer.intervalMs("2"));
    }

}

